/**
 * org.springframework.web.servlet.mvc.SimpleFormController 是AbstractFormController的子類別，對於簡單的表單可以直接繼承這個類別，<br>
 * 並重新定義其onSubmit()或doSubmitAction()方法以處理使用者的請求，SimpleFormController的處理流程是這樣的：<br>
 * <br>
 * 1. 呼叫processFormSubmission()以檢驗 Errors 物件，看看在綁定或驗證時有無任何的錯誤。<br>
 * 2. 如果有錯誤發生，返回"formView"所設定的頁面。<br>
 * 3. 如果isFormChangeRequest()根據request被重新定義並返回true，則也會回到"formView"，在回到"formView"之前會呼叫 onFormChange() ，讓您有機會修正表單物件。<br>
 * 4. 如果沒有錯誤發生，則會呼叫帶有HttpServletRequest、 HttpServletResponse、Object、BindException參數的onSubmit()，預設是呼叫僅帶Object及<br>
 *    BindException的onSubmit()，而後者預設是呼叫只有Object參數的onSubmit()，預設是導向設定的 "successView"，可以考慮重新定義doSubmitAction()，<br>
 *    不用返回ModelAndView，預設會導向 "successView"，在不需要向"successView"傳送任何Model資料物件時可以使用。<br>
 */

package controller.form.simple;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;

import com.e885.log.E885Logger;

import common.UserCommand;

/**
 * @author Eric.Kao(gau168.gau@msa.hinet.net)
 * @version 1.0
 * @company E885 Group
 * @copyright Copyright (c) 2001-2008
 */

public class MySimpleFormController extends SimpleFormController
{
	/*
	 * (non-Javadoc)
	 * 
	 * @see org.springframework.web.servlet.mvc.SimpleFormController#onSubmit(java.lang.Object)
	 */
	@Override
	protected ModelAndView onSubmit( Object command ) throws Exception
	{
		UserCommand userCommand = ( UserCommand )command;
		
		String name = userCommand.getName();
		String password = userCommand.getPassword();
		
		E885Logger.testLog.info( "name:[" + name + "]" );
		E885Logger.testLog.info( "password:[" + password + "]" );

		// 判斷使用者的帳號和密碼是否正確, 因為這邊是範例, 所以只有一個邏輯判斷, 正確的做法要連結到資料庫
		if( name.equals( "eric.kao" ) && password.equals( "1234" ) )
			return new ModelAndView( getSuccessView(), "user", name );

		return new ModelAndView( getFormView() );
	}

}
